package visiopuce.ui.view;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.eclipse.jface.viewers.ArrayContentProvider;
import org.eclipse.jface.viewers.TableViewer;
import org.eclipse.jface.viewers.TableViewerColumn;
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.ScrolledComposite;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Table;
import org.eclipse.ui.part.ViewPart;
import org.eclipse.wb.swt.SWTResourceManager;

import visiopuce.ApplicationContexte;
import visiopuce.objets.Analyse;
import visiopuce.objets.Secteur;
import visiopuce.objets.TypeAnalyse;
import visiopuce.objets.Utilisateur;
import visiopuce.service.AnalyseServiceImpl;
import visiopuce.service.ReferentielServiceImpl;
import visiopuce.ui.listener.DoubleCliqueListeTravailListener;
import visiopuce.ui.providers.ListeTravailTableLabelProvider;

public class ReunionPuceView extends ViewPart {

	public static final String ID = "visiopuce.reunionPuceView";
	private TableViewer tableViewer;
	private Label nombreResultat;
	private Label titres;
	private Composite c;

	public ReunionPuceView() {
	}

	@Override
	public void createPartControl(Composite parent) {

		final ScrolledComposite sc = new ScrolledComposite(parent, SWT.V_SCROLL | SWT.H_SCROLL | SWT.BORDER);
		List<Analyse> analyses = AnalyseServiceImpl.getInstance().getAnalysePuceReunion();
		c = new Composite(sc, SWT.NONE);
		c.setLayout(new GridLayout(1, true));
		c.setSize(400, 400);
		sc.setContent(c);
		sc.setExpandHorizontal(true);
		sc.setExpandVertical(true);
		sc.getVerticalBar().setIncrement(10);
		sc.getHorizontalBar().setIncrement(10);
		sc.setMinSize(c.computeSize(1000, 1000));

		// sc1.setLayoutData(new GridData());
		// sc1.setExpandVertical(true);
		//
		// c = new Composite(sc1, SWT.NONE);
		// sc1.setContent(c);
		// sc1.getVerticalBar().setIncrement(10);
		// sc1.getHorizontalBar().setIncrement(10);
		// sc1.setExpandHorizontal(true);

		// sc1.setMinSize(c.computeSize(SWT.DEFAULT, SWT.DEFAULT));
		// this.setControl(sc1);

		c.setLayout(new GridLayout(1, true));

		titres = new Label(c, SWT.BORDER);
		titres.setFont(SWTResourceManager.getFont("Segoe UI", 15, SWT.BOLD | SWT.UNDERLINE_SQUIGGLE));

		titres.setText("Dossiers puce à passer en réunion");
		titres.pack();

		nombreResultat = new Label(c, SWT.BORDER);
		String nb = "";
		// if (analyses.size() == 200){
		// nb = "> 200";
		// } else {
		nb = "" + analyses.size();
		// }
		nombreResultat.setText("Nombre de dossiers trouvés : " + nb);
		nombreResultat.pack();

		tableViewer = new TableViewer(c, SWT.FULL_SELECTION);
		createColumns(tableViewer);
		Table table = tableViewer.getTable();
		GridData gd = new GridData(SWT.LEFT, SWT.FILL, false, true);
		if (analyses.size() > 0) {
			gd.minimumHeight = 150;// Math.min(150, analyses.size() + 1 * 10);
		}

		table.setLayoutData(gd);

		table.setHeaderVisible(true);
		table.setLinesVisible(true);
		tableViewer.setContentProvider(ArrayContentProvider.getInstance());
		tableViewer.addDoubleClickListener(new DoubleCliqueListeTravailListener());
		tableViewer.setInput(analyses);

		// tableViewer[i].refresh();
		tableViewer.getTable().pack();

	}

	@Override
	public void setFocus() {
		// TODO Auto-generated method stub

	}

	private void createColumns(TableViewer table) {

		String[] titles = new String[] { "Identité", "Prélèvement", "Date de réception", "Date de la téchnique", "Technicienne", "Urgent" };
		int[] bounds = { 250, 100, 80, 80, 100, 300 };

		TableViewerColumn column1 = createTableViewerColumn(titles[0], bounds[0], 0, table);
		TableViewerColumn column2 = createTableViewerColumn(titles[1], bounds[1], 1, table);
		TableViewerColumn column3 = createTableViewerColumn(titles[2], bounds[2], 2, table);
		TableViewerColumn column4 = createTableViewerColumn(titles[3], bounds[3], 3, table);
		TableViewerColumn column5 = createTableViewerColumn(titles[4], bounds[4], 4, table);
		TableViewerColumn column6 = createTableViewerColumn(titles[5], bounds[5], 5, table);

	}

	private TableViewerColumn createTableViewerColumn(String header, int width, int idx, TableViewer table) {
		TableViewerColumn column = new TableViewerColumn(table, SWT.LEFT, idx);
		column.getColumn().setText(header);
		column.getColumn().setWidth(width);
		column.getColumn().setResizable(true);
		column.getColumn().setMoveable(true);
		column.setLabelProvider(new ListeTravailTableLabelProvider(idx));
		return column;
	}

}
